Qual a table e qual a coluna (da data base) responsável pela quantidade de points q um player possui?
*preciso saber essas informações, pois isso pode mudar de servidor para servidor.
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Qual a table e qual a coluna (da data base) responsável pela quantidade de points q um player possui?
*preciso saber essas informações, pois isso pode mudar de servidor para servidor.
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Qual a table e qual a coluna (da data base) responsável pela quantidade de points q um player possui?
*preciso saber essas informações, pois isso pode mudar de servidor para servidor.
Bem Dani, eu não conheço muito bem mais os points fica na account do jogador creio eu que tudo se resumi na tabela account, e também eu uso o global do mitsuig 10.90 se é que saber o server que eu uso ajuda.
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Nesse caso, precisamos ter certeza.
Abra a table account e veja se existe alguma coluna chamada points.
Caso não exista, veja se vc tem a table z_shop_offer, caso tenha, confira se existe a coluna points. (to citando essa table e coluna pois é assim no meu)
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Nesse caso, precisamos ter certeza.
Abra a table account e veja se existe alguma coluna chamada points.
Caso não exista, veja se vc tem a table z_shop_offer, caso tenha, confira se existe a coluna points. (to citando essa table e coluna pois é assim no meu)
A minha não possui z_Shop, e sim está na tabela account como eu disse, possui o premium_points e guild_points.
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Beleza... Vamos lá... Eu estou muito enferrujado em sql, então vamos torcer pra dar certo... ![]()
Sem contar que eu não tenho ctz se as sua table e colunas são exatamente da forma como eu as escrevi no script.
Então, vamos ao teste. Aqui está o script de sacar. Se ele funcionar, aí vc me avise que eu faço os outros 2. Se ele ñ funcionar, diga qual o erro que deu e mande uma print da sua table accounts.
local pointObj = 2160 --id do item "points"
function onSay(cid, words, param)
if param ~= "" then
playerPoints = db.executeQuery("SELECT FROM `accounts` GET `premium_points` WHERE id='.. getPlayerAccountId(cid)..'")
if param <= playerPoints then
doPlayerAddItem(cid, pointObj, param)
db.executeQuery("UPDATE accounts SET `premium_points`='..playerPoints-param..' WHERE id='.. getPlayerAccountId(cid)..'")
playerPointsNew = db.executeQuery("SELECT FROM `accounts` GET `premium_points` WHERE id='.. getPlayerAccountId(cid)..'")
doPlayerSendTextMessage(cid, 22, "Você ainda possui '..playerPointsNew..' premium points em sua conta no shopping.")
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
return true
end
*caso não saiba instalar uma talkaction, avisa, que aí eu te ensino.
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Beleza... Vamos lá... Eu estou muito enferrujado em sql, então vamos torcer pra dar certo...
Sem contar que eu não tenho ctz se as sua table e colunas são exatamente da forma como eu as escrevi no script.
Então, vamos ao teste. Aqui está o script de sacar. Se ele funcionar, aí vc me avise que eu faço os outros 2. Se ele ñ funcionar, diga qual o erro que deu e mande uma print da sua table accounts.
local pointObj = 2160 --id do item "points" function onSay(cid, words, param) if param ~= "" then playerPoints = db.executeQuery("SELECT FROM `accounts` GET `premium_points` WHERE id='.. getPlayerAccountId(cid)..'") if param <= playerPoints then doPlayerAddItem(cid, pointObj, param) db.executeQuery("UPDATE accounts SET `premium_points`='..playerPoints-param..' WHERE id='.. getPlayerAccountId(cid)..'") playerPointsNew = db.executeQuery("SELECT FROM `accounts` GET `premium_points` WHERE id='.. getPlayerAccountId(cid)..'") doPlayerSendTextMessage(cid, 22, "Você ainda possui '..playerPointsNew..' premium points em sua conta no shopping.") else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end return true end*caso não saiba instalar uma talkaction, avisa, que aí eu te ensino.
A talk eu sei fazer, mais deu erro no executeQuery, e troquei para query e deu seguinte erro:
no ExecuteQuery deu o seguinte erro:
Editado Janeiro 25 por julhinhokullitz
info
Grupo: Barão
Registrado: 13/07/15
Posts: 242
Reputação: +56
Char no Tibia: Sekk

info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Tenta assim:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if param ~= "" then
if param <= getAccountPoints(cid) then
doPlayerAddItem(cid, pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. getPlayerAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
return true
end
~Agradecimentos ao Christofer Ricardo pela função getAccountPoints
Editado Janeiro 25 por Danihcv
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Tenta assim:
local pointObj = 2160 --id do item "points" function getAccountPoints(cid) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(cid, words, param) if param ~= "" then if param <= getAccountPoints(cid) then doPlayerAddItem(cid, pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. getPlayerAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end return true end~Agradecimentos ao Christofer Ricardo pela função getAccountPoints
Ainda está dando um erro, será que porque não tem essa função?
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Ok. Dei uma "tradução" pra versão 1.1. Não to com acesso às funções do 1.2 no momento... Mas vou dar uma pesquisada.
Contudo, vê se assim já dá certo:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getAccountId(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if param ~= "" then
if tonumber(param) <= getAccountPoints(cid) then
doPlayerAddItem(cid, pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. player:getAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
return true
end
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Ok. Dei uma "tradução" pra versão 1.1. Não to com acesso às funções do 1.2 no momento... Mas vou dar uma pesquisada.
Contudo, vê se assim já dá certo:
local pointObj = 2160 --id do item "points" function getAccountPoints(cid) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getAccountId(cid)..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(cid, words, param) if param ~= "" then if tonumber(param) <= getAccountPoints(cid) then doPlayerAddItem(cid, pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. player:getAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end return true end
Então Dani, não deve ter essa função. Olha o erro que deu:
info
Grupo: Conde
Registrado: 07/04/15
Posts: 926
Reputação: +335
Gênero: Masculino

Eu ainda não compreendi mt bem como funciona esse tfs 1.2... Mas recebi um auxilio, aqui.
Testa agr:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if param ~= "" then
if tonumber(param) <= getAccountPoints(cid) then
player:addItem(cid, pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
newPoints = getAccountPoints(cid)
player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
player:sendCancel(cid, "Você não tem tantos premium points assim.")
end
else
player:sendCancel(cid, "Você precisa especificar um valor.")
end
return true
end
Caso não dê certo, tenta assim:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if param ~= "" then
if tonumber(param) <= player:getAccountPoints(cid) then
player:addItem(cid, pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
newPoints = player:getAccountPoints(cid)
player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
player:sendCancel(cid, "Você não tem tantos premium points assim.")
end
else
player:sendCancel(cid, "Você precisa especificar um valor.")
end
return true
end
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea
Olá boa tarde;
Gostaria de uma Talk ou algo do tipo que sacassem os pontos do site e depositassem eles.
Exemplo:
- Cabei de receber meus pontos e tem 100, ai in-game o player falaria !sacar 90 ai o comando sacaria esses 90 e diria o que ainda tem no site.
Exemplo da mensagem: Você ainda possui 10 premium points em sua conta no shopping.
- O mesmo server para depositar, o jogador não gastou os 90 e gostaria de guarda e não fica no deposito nem carregando com ele.. ai ele falaria !depositar 5, depositaria e ainda falava o seu saldo no site que seria 15.
Exemplo da mensagem: Você acabou de depositar 5 premium points no shopping.
- Para ver o saldo no caso o comando seria !saldo, e assim mostraria o total que ele tem no shop do site que é 15.
Exemplo da mensagem: Seu saldo no shopping atual é de 15 Premium points.
Agradeçeria muito, se tiver algum tutorial aqui do tipo, peço que me mandem o link por favor e obrigado desde já pela ajuda.
obs: Espero ter me expressado bem nestas informações.